#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>

int fd=-1;

void handler(int signum)
{
    char buf[64]={'\0'};
    int ret = read(fd,buf,64);
    if (ret<0)
    {
        perror("open err\n");
        return ;
    }
    
    printf("len = %d\n",ret);

}

int main(int argc, char const *argv[])
{
    fd=open("/dev/input/mouse0",O_RDONLY);
    if (fd<0)
    {
        perror("open err\n");
        return -1;
    }
    
    //开启异步IO通知
    fcntl(fd,__F_SETOWN,getpid());

    //异步通知
    int flag =fcntl(fd,F_GETFL);
    flag|= FASYNC;
    fcntl(fd,F_SETFL,flag);

    signal(SIGIO,handler);

    while (1)
    {
        sleep(1);
    }
    
    close(fd);
    return 0;
}
